//go:build windows
// +build windows

package win

import "syscall"

type ulong int32
type ulong_ptr uintptr

var (
	kernel32 = syscall.NewLazyDLL("kernel32.dll")
	/*
	   CreateToolhelp32Snapshot
	       指定快照中包含的系统内容，这个参数能够使用下列数值（常量）中的一个或多个。
	       TH32CS_INHERIT(0x80000000)      - 声明快照句柄是可继承的。
	       TH32CS_SNAPALL                  - 在快照中包含系统中所有的进程和线程。
	       TH32CS_SNAPHEAPLIST(0x00000001) - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
	       TH32CS_SNAPMODULE(0x00000008)   - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
	       TH32CS_SNAPPROCESS(0x00000002)  - 在快照中包含系统中所有的进程。
	       TH32CS_SNAPTHREAD(0x00000004)   - 在快照中包含系统中所有的线程。
	       H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
	   th32ProcessID
	       指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效，在其他情况下该参数被忽略，所有的进程都会被快照。
	*/
	CreateToolhelp32Snapshot = kernel32.NewProc("CreateToolhelp32Snapshot")
	CloseHandle              = kernel32.NewProc("CloseHandle")
	Process32Next            = kernel32.NewProc("Process32Next")

	psapi                = syscall.NewLazyDLL("Psapi.dll")
	getModuleFileNameExW = psapi.NewProc("GetModuleFileNameExW")
	enumProcessModulesEx = psapi.NewProc("EnumProcessModulesEx")
)
